package com.club.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.club.entity.Activity;

import java.util.List;

/**
 * 活动服务接口
 */
public interface ActivityService extends IService<Activity> {
    
    /**
     * 创建活动
     * @param activity 活动信息
     * @return 是否创建成功
     */
    boolean createActivity(Activity activity);
    
    /**
     * 更新活动信息
     * @param activity 活动信息
     * @return 是否更新成功
     */
    boolean updateActivity(Activity activity);
    
    /**
     * 更新活动状态
     * @param id 活动ID
     * @param status 状态
     * @return 是否更新成功
     */
    boolean updateActivityStatus(Long id, Integer status);
    
    /**
     * 根据ID删除活动
     * @param id 活动ID
     * @return 是否删除成功
     */
    boolean deleteActivity(Long id);
    
    /**
     * 根据ID查询活动
     * @param id 活动ID
     * @return 活动信息
     */
    Activity getActivityById(Long id);
    
    /**
     * 根据社团ID查询活动列表
     * @param clubId 社团ID
     * @return 活动列表
     */
    List<Activity> getActivitiesByClubId(Long clubId);
    
    /**
     * 查询所有活动
     * @param status 活动状态（可选）
     * @return 活动列表
     */
    List<Activity> getAllActivities(Integer status);
    
    /**
     * 审批活动
     * @param id 活动ID
     * @param approvalStatus 审批状态
     * @param approverId 审批人ID
     * @param reason 审批原因
     * @return 是否审批成功
     */
    boolean approveActivity(Long id, Integer approvalStatus, Long approverId, String reason);
    
    /**
     * 增加活动参与人数
     * @param id 活动ID
     * @return 是否增加成功
     */
    boolean incrementParticipantCount(Long id);
    
    /**
     * 减少活动参与人数
     * @param id 活动ID
     * @return 是否减少成功
     */
    boolean decrementParticipantCount(Long id);
}